package com.atguigu.gmallpublisher.service.impl;

import com.atguigu.gmallpublisher.mapper.SugarMapper;
import com.atguigu.gmallpublisher.service.SugarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class SugarServiceImpl implements SugarService {

    //从mapper里查,要自动注入SugarMapper对象
    @Autowired//自动注入省去了new对象
    private SugarMapper sugarMapper;//此处的红线不影响程序的运行,实际上mybatis帮我们写了这个接口的实现类

    @Override
    public BigDecimal getGmv(int date) {//返回的sum(order_amount)为BigDecimal类型
        return sugarMapper.selectGmv(date);
    }


    /*
┌─trademark_name─┬──────────────────────────gmv─┬─ct─┐
│ 苹果           │ 1376111.00000000000000000000 │  5 │
│ 华为           │  796413.00000000000000000000 │  6 │
│ TCL            │  664933.00000000000000000000 │  3 │
│ 三星           │  495825.00000000000000000000 │  7 │
│ 小米           │  245623.00000000000000000000 │  2 │
└────────────────┴──────────────────────────────┴────

List(map((trademark_name,苹果),(gmv,1376111),(ct,5)),
     map((trademark_name,华为),(gmv,796413),(ct,6)),
     ...)

     ===>resultMap((苹果,1376111),(华为,796413),...)
 */
    @Override
    public Map<String, BigDecimal> getGmvByTm(int date, int limit) {//返回的是k为品牌名，v为对应的GMV的map集合，也可以用List<Tuple2>
        List<Map> maps = sugarMapper.selectGmvByTm(date, limit);

        //创建map用于存放结果数据
        HashMap<String, BigDecimal> resultMap = new HashMap<>();
//        遍历maps， <苹果,1376111>取出来存放到resultMap里
        for (Map map : maps) {
//           map((trademark_name,苹果),(gmv,1376111),(ct,5))--->resultMap(苹果,1376111)
            resultMap.put((String) map.get("trademark_name"),(BigDecimal) map.get("gmv"));
        }
        return resultMap;
    }
}

